package com.utf999.qiangmanger.dao.iface;

import java.util.List;

import com.utf999.qiangmanger.dao.IQiangDAO;
import com.utf999.qiangmanger.entity.orm.OrderTypeEntity;
import com.utf999.qiangmanger.exception.BizException;

public interface IOrderTypeDAO extends IQiangDAO<OrderTypeEntity> {
	/**
	 * 根据公司编号查询订单类型信息（无论这些订单类型的状态如何）<br>
	 * 包括这个订单对应的用户组信息、奖惩信息
	 * @param companyid 指定的公司编号信息
	 * @return
	 * @throws BizException
	 */
	public List<OrderTypeEntity> queryOrderTypesByCompanyid(String companyid) throws BizException;
	
	/**
	 * 根据工单类型编号查询指定的公司下的工单类型信息
	 * @param companyid 指定的公司编号
	 * @param orderCode 指定的工单类型编号
	 * @return 如果存在对应的工单类型，则进行返回，其他情况下返回null
	 * @throws BizException
	 */
	public OrderTypeEntity queryOrderTypeByCode(String companyid , String orderCode) throws BizException;
	
	/**
	 * 根据工单类型编号查询指定的公司下的工单类型信息（查询指定的工单类型是否存在）
	 * @param companyid 指定的公司编号
	 * @param orderCode 指定的工单类型编号
	 * @return 如果存在对应的工单类型，则进行返回，其他情况下返回null
	 * @throws BizException
	 */
	public OrderTypeEntity existOrderTypeByCode(String companyid , String orderCode) throws BizException;
	
	/**
	 * 将一个指定的工单类型绑定到一个或者多个用户分组上
	 * @param ordertypeid 指定的工单类型id
	 * @param groupids 要绑定到的一个或者多个用户分组上
	 * @throws BizException
	 */
	public void bindUsergroupMapping(String ordertypeid , String... groupids) throws BizException;
	
	/**
	 * 讲一个指定的工单类型从一个或者多个用户组中取消绑定
	 * @param ordertypeid 指定的工单类型id
	 * @param groupids 需要取消绑定的一个或者多个用户分组
	 * @throws BizException
	 */
	public void unbindUsergroupMapping(String ordertypeid , String... groupids) throws BizException;
}
